---------------------------------------- Chapitre I - Les bases ----------------------------------------
Ollydbg
OllyDbg est un débogueur pour Windows développé par Oleh Yuschuk et dont l'évolution se poursuit. La version la plus récente est la 2.01 alpha 4, pourtant la v1.10 est la plus utilisée, car on peut y intégrer de nombreux plugins (les plugins sont des petits fichiers complémentaires permettant d'ajouter des fonctionnalités au programme original) alors que la v2.01 alpha 4 vient tout juste d'intégrer cette possibilité, mais au moment où j'écris ces lignes, il ne semble pas y avoir de compatibilité avec les plugins existants.
C'est un programme permettant de suivre pas à pas (c'est à dire instruction par instruction) le déroulement d'un autre programme. On peut voir en temps réel (just-in-time) la ligne de code exécutée, la valeur des registres, le contenu de la pile, les valeurs en mémoire et on peut surtout poser des breakpoints (BP). Les breakpoints sont des points d'arrêts que l'on peut poser sur une ligne de code, sur un emplacement mémoire ... et qui feront s'arrêter (breaker) le programme en cours d'exécution lorsqu'il arrivera sur ceux-ci. Je pense que vous voyez déjà l'utilité des breakpoints pour nous !
Je vous conseille de télécharger les 2 versions directement sur le site Ollydbg :
http://www.ollydbg.de/
La v1.10 se trouve ici :
odbg110
La v2.01 beta 2 ici :
odbg201h
Nous utiliserons en règle générale la v2.01.
Ollydbg ne nécessite pas d'installation. Décompressez l'archive dans un dossier, ouvrez celui-ci, cliquez sur ollydbg.exe et c'est parti !
A la première ouverture, une fenêtre vide à part les menus et quelques boutons. Ouvrons (File / Open) un programme exécutable (*.exe), ici le Bloc-notes (C:\WINDOWS\notepad.exe) :
La zone de travail se décompose en 5 parties :
Elle se décompose en 4 colonnes : les adresses de début d'instructions en hexadécimal (1), les opcodes en hexadécimal (2), le code en asm (3) et les commentaires divers (4).
On retrouve les registres généraux et d'offsets (1) ainsi que les flags (indicateurs ou drapeaux) (2). On ne s'intéressera pas aux autres pour le moment.
Elle nous donne des informations immédiates sur la ligne de code sélectionnée (valeurs des opérandes, les différents points d'appels pour une sous-routine, etc).
Elle se compose de 3 colonnes : l'adresse du 1er bit de la ligne, chaque ligne contenant 16 bits (1), le contenu de chaque bits en hexadécimal (2) et le contenu de chaque bit en caractères ASCII (3).
3 colonnes vont nous intéresser : L'adresse dans la pile en hexadécimal (1), le contenu de la pile pointé par l'adresse en (1) composé de 4 octets (2) et divers commentaires notés par OllyDbg (3).
Nous avons ensuite la barre de titre :
On peut voir le nom du programme en cours de débogage ainsi que le module dans lequel on se trouve (module principal, dll ...).
Puis viennent les menus, tout ce qu'il y a de plus classique, et enfin, la barre de boutons :
- F3 : Ouvrir un exécutable à déboguer
- Ctrl + F2 : Redémarrer le débogage du programme en cours
- Alt + F2 : Fermer le programme en cours de débogage
- F9 : Lancer le programme en cours de débogage à partir de l'instruction en cours
- F11 : Lancer uniquement le thread affiché (nouveauté v2.01)
- F12 : Mettre en pause le programme en cours de débogage
- F7 : Avancer en mode pas à pas en entrant dans les calls
- F8 : Avancer en mode pas à pas sans entrer dans les calls
- Ctrl + F11 : Passer en mode Trace en entrant dans les calls
- Ctrl + F12 : Passer en mode Trace sans entrer dans les calls
- Ctrl + F9 : Exécuter le programme jusqu'au prochain Return
- Alt + F9 : Exécuter le programme jusqu'au retour dans le code du module principal
(nouveauté v2.01)
- Alt + L : Afficher la fenêtre des Logs
- Alt + E : Afficher la fenêtre des programmes en cours d'exécution
- Alt + M : Afficher la fenêtre de la mémoire
- Alt + W : Afficher la fenêtre des fenêtres actives
- Alt + T : Afficher la fenêtre des threads
- Alt + C : Afficher la fenêtre du CPU (Code)
- Alt+ R : Afficher la fenêtre des références (résultat des recherches)
- Afficher la fenêtre des logs du Run Trace
- Alt + B : Afficher la fenêtre des breakpoints
- Alt + Y : Afficher la fenêtre des memory breakpoints (nouveauté v2.01)
- Alt + H : Afficher la fenêtre des hardware breakpoints (nouveauté v2.01)
- Alt + O : Afficher la fenêtre des options
Enfin, dernière indication que l'on peut voir en bas à droite, c'est si le programme débogué est en pause
( ) ou en cours d'exécution
(
).
Il ne nous reste plus que quelques réglages à effectuer.
Tout d'abord, rendez-vous dans le répertoire de Ollydbg et créez un nouveau dossier appelé UDD. Les fichiers *.UDD sont des fichiers créés par Olly pour sauvegarder ce que vous faites lors d'une séance de débogage (breakpoints, commentaires, labels, etc) afin de pouvoir tout retrouver lors de la séance suivante. Créer ensuite un deuxième dossier appellé Plugins. Les plugins sont des extensions rajoutant des fonctionnalités à Olly.
Ensuite, récupérez dans le dossier "Pack\Chapitre I\2 - Ollydbg" l'archive
win32api.zip
et décompressez-la dans le répertoire de votre choix (pour moi ce sera dans D:\WIN32API).
Note : nous verrons plus tard ce que sont les apis windows.
On retourne dans Olly et on clique sur et la fenêtre suivante apparaît :
Cliquez sur OK pour enregistrer vos modifications et c'est fini !
On va faire une pause avec la théorie et s'amuser un peu sur notre premier crackme (un crackme étant un programme spécialement conçu pour être cracké).